package com.hera.process.config.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hera.base.util.FiltroDTO;
import com.hera.process.config.dao.TaskUserDao;
import com.hera.process.config.service.TaskUserService;
import com.hera.process.workflow.domain.TaskUser;

@Service("taskuserservice")
public class TaskUserServiceImpl implements TaskUserService {

	static final Logger logger = Logger.getLogger(TaskUserServiceImpl.class);
	
	@Autowired
	private TaskUserDao taskuserdao;
	
	@Override
	public TaskUser findById(Long id) {
		
		return taskuserdao.findOne(id);
	}

	@Override
	public void update(TaskUser entity) {
		
		taskuserdao.save(entity);
	}

	@Override
	public void save(TaskUser entity) {
		
		taskuserdao.save(entity);
	}

	@Override
	public void delete(TaskUser entity) {
		
		taskuserdao.delete(entity);;
	}

	@Override
	public List<TaskUser> findAll() {
		
		return taskuserdao.findAll();
	}

	@Override
	public List<TaskUser> findAll(FiltroDTO filtroDTO) {
		
		return taskuserdao.obtenerEntidadesPorFiltros(filtroDTO);
	}

	@Override
	public List<Long> obtenerCodigosUsuarariosaCargo(List<Long> codigos,
			Long codigoJefe) {
		List<Long> codigosEmpleado = taskuserdao.obtenerCodigosUsuarioCargo(codigoJefe);
		for(Long codigoEmpleado: codigosEmpleado) {
		codigos.add(codigoEmpleado);
		obtenerCodigosUsuarariosaCargo(codigos, codigoEmpleado);
		}
		return taskuserdao.obtenerCodigosUsuarioCargo(codigoJefe);
		
	}

	@Override
	public List<TaskUser> findBandejaUsuario(Long codigoJefe) {
		List<Long> codigos = new ArrayList<Long>();
		obtenerCodigosUsuarariosaCargo(codigos, codigoJefe);
		List<TaskUser> listaTareas= new ArrayList<TaskUser>();
		if(codigos.size()>0){
			listaTareas=taskuserdao.findBandejaUsuario(codigos);
		}
		return listaTareas;
	}

}
